﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FrbaBus.Properties;
using System.Data.SqlClient;

namespace FrbaBus.CanjedePtos
{
    public partial class FormCanjeCantidad : Form
    {
        private long premio;
        private long DNI;
        private long puntosActuales;

        public FormCanjeCantidad(long DNI, long premio, long puntosActuales)
        {
            InitializeComponent();
            this.premio = premio;
            this.DNI = DNI;
            this.puntosActuales = puntosActuales;
        }

        private void FormCanjeCantidad_Load(object sender, EventArgs e)
        {
            tbCantidadCanje.Text = "1";
        }

        private void btnCanjeOK_Click(object sender, EventArgs e)
        {
            this.Hide();

            string sConnectionString = Settings.Default.GD1C2013ConnectionString;
            SqlConnection connection = new SqlConnection(sConnectionString);
            SqlCommand cmd = new SqlCommand("THE_BEST_IAS.pr_canjear_premio", connection);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add(new SqlParameter("@p_usu_codigo", SqlDbType.BigInt)).Value = this.DNI;
            cmd.Parameters.Add(new SqlParameter("@p_prem_codigo", SqlDbType.BigInt)).Value = premio;
            cmd.Parameters.Add(new SqlParameter("@p_can_cant", SqlDbType.BigInt)).Value = Convert.ToInt64(tbCantidadCanje.Text.Trim().ToString());
            cmd.Parameters.Add(new SqlParameter("@p_can_fecha", SqlDbType.DateTime)).Value = Fechas.fechaSistema;
            cmd.Parameters.Add(new SqlParameter("@p_puntos_totales", SqlDbType.BigInt)).Value = puntosActuales;
            
            cmd.Parameters.Add("@returnValue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
            cmd.CommandTimeout = 1000;

            connection.Open();
            cmd.ExecuteNonQuery();

            int valorRetorno = Convert.ToInt32(cmd.Parameters["@returnValue"].Value);

            connection.Close();

            if (valorRetorno == 0) {

                MessageBox.Show("El canje del premio se realizó correctamente", "INFORMACION");
            }

            if (valorRetorno == 1)
            {
                MessageBox.Show("El canje del premio no se pudo realizar correctamente, no hay stock suficiente para la cantidad solicitada", "ERROR");
            }

            if (valorRetorno == 2)
            {
                MessageBox.Show("El canje del premio no se pudo realizar correctamente, los puntos que posee el cliente no son suficientes para el canje solicitado", "ERROR");
            }


        }

        private void btnCanc_Click(object sender, EventArgs e)
        {
            this.Hide();

            FormCanjePtos form = new FormCanjePtos(this.DNI.ToString());
            form.ShowDialog(this);
        }
    }
}
